const express = require('express');

const router = express.Router();

const User = require('./models/user');

const md5 = require('blueimp-md5');

// 设计路由
// 首页
router.get('/',(req,res)=>{
    //console.log(req.session.user);
    res.render('index.html',{
        user: req.session.user
    });
});

// 渲染注册页面
router.get('/register',(req,res)=>{

    res.render('register.html');

});


// 处理注册请求  ****【注册】****
router.post('/register',(req,res,next)=>{
    let content = req.body;

    // 注册的时候  首先查询  是否重复
    User.findOne({
        $or: [ // 并列条件
            {
                email: content.email
            },
            {
                nickname: content.nickname
            }
        ]      
    },function (err,data) {

        if (err) {
            return res.status(500).json({
                success: false,
                message: '服务器内部错误'
            });
        }

        if (data) {
            // 找到了说明 ->  用户已经存在    
            return res.status(200).json({
                err_code: 1,
                message: 'already exits'
            });
        }


        // md5 密码加密
        content.password = md5(md5(content.password));

        // 上边条件都不符合说明 用户正常注册 那么保存数据
        new User(content).save((err,user)=>{ // 注意这里的user 就是最新注册的数据
            if (err) {
                /* return res.status(500).json({
                    err_code: 500,
                    message: 'Internal Error'
                }); */

                return next(err)
            }

            // 注册成功  使用 session 记录用户的登录状态.
            // 直接把当前的用户记录到session中
            req.session.user = user;

            // 注册成功 返回数据 成功 -> err_code = 0
            // 注意 这里要发送给一个字符串，express 提供一个方法 json 
            // 他接受一个对象，转换为转换为字符串发给浏览器
            //return res.status(200).send('{"err_code": 0}');
            return res.status(200).json({
                err_code: 0,
                message: 'ok'
            });
        })
        
    })
});

// 渲染登录页面
router.get('/login',(req,res)=>{

    res.render('login.html');

});


// 处理登录请求
router.post('/login',(req,res,next)=>{

    let content = req.body;

    User.findOne({
        eamil: content.eamil,
        password: md5(md5(content.password))
    },(err,data)=>{

        if (err) {
            /* return res.status(500).json({
                err_code: 500,
                message: err.message
            }); */

            return next(err)
        }

        if (!data) {
            /* return res.status(200).json({
                err_code: 1,
                message: 'Username or password is invalid'
            }); */

            return next(err)
        }


        // 用户存在 登录成功 通过session 记录登录状态
        req.session.user = data;

        res.status(200).json({
            err_code: 0,
            message: 'login success'
        });

    });
    
});

// 退出登录
router.get('/logout',(req,res)=>{
    // 清除 session 的登录状态
    // 重定向到登陆页
    req.session.user = null;

    res.redirect('/login');
});

module.exports = router;